7. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ
7.1. Основные технологии программирования
При разработке компьютерных моделей для задач, решаемых по сложным и
громоздким алгоритмам, получаются длинные программы, которые очень сложно
отлаживать и тестировать. Для облегчения этих работ были разработаны разные
технологии программирования, которые упрощают структуру программы и ее отладку.
Основные из них:
–
модульное программирование;
– программирование «снизу вверх» (восходящее
программирование);
–
программирование «сверху вниз» (нисходящее программирование).
Согласно
этим технологиям в алгоритме задачи выделяются модули. Модуль – это либо
логически законченный фрагмент общей
задачи,
либо часто повторяющийся блок расчётов.
Каждый
модуль оформляется по определённым правилам в виде подпрограммы, и в текст
основного алгоритма вместо него вставляется короткая инструкция вызова
подпрограммы. Когда выполнение программы доходит до этой инструкции,
выполняется фрагмент, заложенный в тело подпрограммы, после чего управление передаётся
на команду, следующую за инструкцией вызова подпрограммы.
Различают
подпрограммы функции (используются как операнды в
выражениях) и процедуры (используются как операторы).
Общую
структуру подпрограмм можно представить следующим образом:

Тело
подпрограммы – это операторы, которые программируют ту часть алгоритма,
которая выделена в данный модуль. Формальные параметры – это те
переменные в теле подпрограммы, значения которых надо будет перед началом
работы этого модуля получить из основной программы.
В
инструкции по вызову указывается имя подпрограммы и фактические
параметры, то есть значения формальных параметров, с которыми следует
выполнить тело подпрограммы в данном месте.
Пример. Дан массив
целых чисел {ai},i=1, 2, ..., 15. Программа должна вычислять
произведение двух сумм некоторых элементов массива {ai}. Так как операции, которые следует
выполнить для суммирования, не зависят от конкретных значений используемых
чисел, алгоритм суммирования, чтобы не повторять его дважды, можно оформить в
виде подпрограммы. Поскольку по условию задачи конечным результатом должно быть
произведение сумм, а не каждая из них по отдельности, подпрограмму можно
оформить по типу подпрограммы-функции. Алгоритм, по которому будет составляться
программа, представляем в псевдокоде:
Функция СУММА(i1,i2)
начало:
s = 0
начало
цикла для i = i1 до i2
s
= s + a(i)
конец
цикла
СУММА
= s
Конец функции
Начало программы
вывести на экран("введите значения массива А")
начало
цикла для j = 1 до 15
ввести
с клавиатуры а(j)
конец
цикла
вывести
на экран ("введите границы индексов первой
суммы")
ввести
с клавиатуры g, w
вывести на экран ("введите границы индексов второй
суммы")
ввести
с клавиатуры t, l
р:= СУММА(g,w) * СУММА(t,l)
вывести
на экран ("произведение равно", р)
Конец
программы
В программу введены константы: g = 1; w = 12; t = 8; l = 15.
Это
– фактические параметры, которые надо использовать вместо формальных параметров
i1 и i2 при
вычислении значения p. В
результате переменная p примет
значение произведения сумм элементов с 1 по 12 и с 8 по 15 из массива {ai}.
При
использовании технологии «сверху вниз» разработка программы начинается с
последовательной детализации алгоритма на все более мелкие части до тех пор,
пока получатся такие модули, для которых можно написать конкретные команды. Затем
составляется текст основной программы, в которой вместо фрагментов, выделенных
в подпрограммы, ставят «заглушки». Это
подпрограммы, в которых вместо реально нужных операторов ставят сигнальные
печати
или
ввод результатов, которые должна была сосчитать эта подпрограмма. Таким образом
проверяют и отлаживают последовательность действий в основном алгоритме. Затем
подпрограммы-заглушки по очереди заменяют на соответствующие алгоритму
подпрограммы, отлаживают и тестируют их. Такая технология облегчает создание программы,
уменьшает количество ошибок и облегчает нахождение допущенных ошибок.
Считается, что программа оптимального по
размерам
модуля целиком должна помещаться на экране дисплея.
При
использовании технологии «снизу вверх» в первую очередь определяются и
разрабатываются вспомогательные модули, которые потребуются для проектируемой
программы. После того, как все модули отлажены, из них, как из кубиков, в
соответствии с начальным алгоритмом собирается основная программа.